package cniao5.com.cniao5shop.blockchain;


import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
import org.web3j.abi.EventEncoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.Bool;
import org.web3j.abi.datatypes.DynamicArray;
import org.web3j.abi.datatypes.Event;
import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.Utf8String;
import org.web3j.abi.datatypes.generated.Uint128;
import org.web3j.abi.datatypes.generated.Uint16;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.abi.datatypes.generated.Uint32;
import org.web3j.abi.datatypes.generated.Uint64;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameter;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.methods.request.EthFilter;
import org.web3j.protocol.core.methods.response.Log;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tuples.generated.Tuple10;
import org.web3j.tuples.generated.Tuple3;
import org.web3j.tuples.generated.Tuple8;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;
import rx.Observable;
import rx.functions.Func1;

/**
 * <p>Auto generated code.
 * <p><strong>Do not modify!</strong>
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.web3j.codegen.SolidityFunctionWrapperGenerator in the 
 * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version 3.3.1.
 */
public class FishContracts_sol_FishCore extends Contract {
    private static final String BINARY = "6000805460a060020a60ff0219169055610240604052603c6080908152607860a05261012c60c05261025860e05261070861010052610e1061012052611c2061014052613840610160526170806101805261e1006101a052620151806101c0526202a3006101e052620546006102005262093a80610220526200008790600190600e620000be565b50600f6003553480156200009a57600080fd5b5060008054600160a060020a031916331790556101f460105560c860125562000188565b6002830191839082156200014f5791602002820160005b838211156200011b57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302620000d5565b80156200014d5782816101000a81549063ffffffff02191690556004016020816003010492830192600103026200011b565b505b506200015d92915062000161565b5090565b6200018591905b808211156200015d57805463ffffffff1916815560010162000168565b90565b612a1680620001986000396000f3006080604052600436106102625763ffffffff60e060020a6000350416625d0540811461026757806305e455461461029a57806306fdde03146102af578063095ea7b3146103395780630e583df01461035f57806312f3489c14610374578063154972121461038c57806318160ddd146103f657806318d896511461040b5780631cd31b941461043f5780631ec559a4146104795780631f772a34146104945780632362a79c146104a957806324e7a38a146104b4578063256c03bd146104d557806330b03aee146104ed57806330e0789e1461050557806338644c5e1461052f5780633b42c6e7146105815780633b904b02146105995780633f4ba83a146105a7578063484acfd8146105bc578063484eccb4146105e05780635c975abb146105f85780636019061b146106215780636352211e1461063c578063680eba27146106545780636af04a571461066957806370a082311461067e5780637a7d49371461069f5780638456cb59146106b45780638462151c146106c95780638a98a9cc1461073a5780638d13966e1461074f5780638da5cb5b14610767578063947a31681461077c57806395d89b41146107915780639d6fac6f146107a6578063a807fd61146107d7578063a9059cbb146107ec578063b2e6ceeb14610810578063b68d6f3614610828578063bd94b0051461089d578063bdcafc55146108b5578063d3e6f49f146108cd578063defb9584146108e5578063df90061b146108fa578063e1c7392a1461090f578063e92abff414610924578063eef2f16814610939578063f1ca941014610951578063f2b47d5214610966578063f2fde38b1461097b575b600080fd5b34801561027357600080fd5b50610288600160a060020a036004351661099c565b60408051918252519081900360200190f35b3480156102a657600080fd5b506102886109ae565b3480156102bb57600080fd5b506102c46109b4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102fe5781810151838201526020016102e6565b50505050905090810190601f16801561032b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034557600080fd5b5061035d600160a060020a03600435166024356109eb565b005b34801561036b57600080fd5b50610288610a8e565b34801561038057600080fd5b5061035d600435610a99565b34801561039857600080fd5b506103a4600435610af0565b604080519a15158b5298151560208b0152898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b34801561040257600080fd5b50610288610c51565b34801561041757600080fd5b50610423600435610c57565b60408051600160a060020a039092168252519081900360200190f35b34801561044b57600080fd5b5061028860043563ffffffff6024358116906044351661ffff60643516600160a060020a0360843516610c72565b34801561048557600080fd5b5061035d600435602435610f22565b3480156104a057600080fd5b506102c4610fcf565b61035d600435611006565b3480156104c057600080fd5b5061035d600160a060020a0360043516611051565b3480156104e157600080fd5b5061035d600435611104565b3480156104f957600080fd5b5061042360043561113f565b34801561051157600080fd5b5061035d600160a060020a036004358116906024351660443561115a565b34801561053b57600080fd5b5061054760043561128b565b60408051600160a060020a0390941684526001608060020a03909216602084015267ffffffffffffffff1682820152519081900360600190f35b34801561058d57600080fd5b506105476004356112cc565b61028860043560243561130d565b3480156105b357600080fd5b5061035d611451565b3480156105c857600080fd5b5061035d600435600160a060020a03602435166114b7565b3480156105ec57600080fd5b50610288600435611516565b34801561060457600080fd5b5061060d61152a565b604080519115158252519081900360200190f35b34801561062d57600080fd5b5061035d60043560243561153a565b34801561064857600080fd5b506104236004356115cd565b34801561066057600080fd5b506102886115e8565b34801561067557600080fd5b506104236115ee565b34801561068a57600080fd5b50610288600160a060020a03600435166115fd565b3480156106ab57600080fd5b50610288611618565b3480156106c057600080fd5b5061035d61161e565b3480156106d557600080fd5b506106ea600160a060020a0360043516611672565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561072657818101518382015260200161070e565b505050509050019250505060405180910390f35b34801561074657600080fd5b50610288611745565b34801561075b57600080fd5b5061042360043561174b565b34801561077357600080fd5b50610423611766565b34801561078857600080fd5b506102c4611775565b34801561079d57600080fd5b506102c46117ac565b3480156107b257600080fd5b506107be6004356117e3565b6040805163ffffffff9092168252519081900360200190f35b3480156107e357600080fd5b506106ea611810565b3480156107f857600080fd5b5061035d600160a060020a0360043516602435611909565b34801561081c57600080fd5b5061035d6004356119bf565b34801561083457600080fd5b50610840600435611a12565b6040805198895267ffffffffffffffff97881660208a0152959096168786015263ffffffff9384166060880152918316608087015290911660a085015261ffff90811660c08501529190911660e083015251908190036101000190f35b3480156108a957600080fd5b5061035d600435611a92565b3480156108c157600080fd5b5061035d600435611ae4565b3480156108d957600080fd5b5061060d600435611b1b565b3480156108f157600080fd5b50610288611bea565b34801561090657600080fd5b506106ea611bf0565b34801561091b57600080fd5b5061035d611ce0565b34801561093057600080fd5b5061035d611d00565b34801561094557600080fd5b5061035d600435611d73565b34801561095d57600080fd5b50610288611daa565b34801561097257600080fd5b50610423611db0565b34801561098757600080fd5b5061035d600160a060020a0360043516611dbf565b60066020526000908152604090205481565b60145481565b60408051808201909152601081527f43727970746f46616e6379436172707300000000000000000000000000000000602082015290565b60005460a060020a900460ff1615610a0257600080fd5b6000818152600560205260409020548190600160a060020a03163314610a2757600080fd5b6000828152600560209081526040918290208054600160a060020a031916600160a060020a03871690811790915582518581529251909233927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505050565b662386f26fc1000081565b6000818152600560205260408120548290600160a060020a03163314610abe57600080fd5b60008381526011602052604090209150610ad782611e46565b1515610ae257600080fd5b610aeb83611e62565b505050565b600080600080600080600080600080600060048c815481101515610b1057fe5b906000526020600020906002020190508060010160189054906101000a900463ffffffff1663ffffffff16600014159a50438160010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115995080600101601c9054906101000a900461ffff1661ffff1698508060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1697508060010160189054906101000a900463ffffffff1663ffffffff1696508060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1695508060010160109054906101000a900463ffffffff1663ffffffff1694508060010160149054906101000a900463ffffffff1663ffffffff16935080600101601e9054906101000a900461ffff1661ffff16925080600001549150509193959799509193959799565b60045490565b600760205260009081526040902054600160a060020a031681565b600080610c7d612986565b600080600261ffff8816049350600d8461ffff161115610c9c57600d93505b610100604051908101604052808b81526020014267ffffffffffffffff168152602001600067ffffffffffffffff1681526020018a63ffffffff1681526020018963ffffffff168152602001600063ffffffff1681526020018561ffff1681526020018861ffff1681525092506001600484908060018154018082558091505090600182039060005260206000209060020201600090919290919091506000820151816000015560208201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060c082015181600101601c6101000a81548161ffff021916908361ffff16021790555060e082015181600101601e6101000a81548161ffff021916908361ffff16021790555050500391508190507f37720d6aa137708f44ce2b36bad17fe891f872d2575bfc0016425d02c6456cc886828560600151866080015187600001516040518086600160a060020a0316600160a060020a031681526020018563ffffffff1663ffffffff1681526020018463ffffffff1663ffffffff1681526020018363ffffffff1663ffffffff1681526020018281526020019550505050505060405180910390a1610f0f6000878363ffffffff1661115a565b63ffffffff169998505050505050505050565b610f2a6129ca565b60005460a060020a900460ff1615610f4157600080fd5b6000838152600560205260409020548390600160a060020a03163314610f6657600080fd5b6001608060020a0383168314610f7b57600080fd5b610f8484611b1b565b1515610f8f57600080fd5b604080516060810182523381526001608060020a038516602082015267ffffffffffffffff4216918101919091529150610fc98483611ea1565b50505050565b60408051808201909152600381527f4346430000000000000000000000000000000000000000000000000000000000602082015281565b60008054819060a060020a900460ff161561102057600080fd5b505060008181526009602052604090208054600160a060020a03166110458334611f6e565b50610aeb81338561115a565b60008054600160a060020a0316331461106957600080fd5b81905080600160a060020a031663bcca04f86040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156110aa57600080fd5b505af11580156110be573d6000803e3d6000fd5b505050506040513d60208110156110d457600080fd5b505115156110e157600080fd5b60138054600160a060020a031916600160a060020a039290921691909117905550565b600054600160a060020a0316331461111b57600080fd5b6127106012541080156111315750600060125410155b1561113c5760128190555b50565b600860205260009081526040902054600160a060020a031681565b600160a060020a03821660009081526006602052604090205461118490600163ffffffff6120fa16565b600160a060020a0380841660008181526006602090815260408083209590955585825260059052929092208054600160a060020a03191690921790915583161561123c57600160a060020a0383166000908152600660205260409020546111f290600163ffffffff61210916565b600160a060020a038416600090815260066020908152604080832093909355838252600881528282208054600160a060020a03199081169091556007909152919020805490911690555b60408051600160a060020a0380861682528416602082015280820183905290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b60096020526000908152604090208054600190910154600160a060020a03909116906001608060020a03811690608060020a900467ffffffffffffffff1683565b60116020526000908152604090208054600190910154600160a060020a03909116906001608060020a03811690608060020a900467ffffffffffffffff1683565b600081815260056020526040812054819081908190819081908790600160a060020a0316331461133c57600080fd5b60005460a060020a900460ff161561135357600080fd5b600089815260116020526040902060018101549096506001608060020a031694503485111561138157600080fd5b61138a86611e46565b151561139557600080fd5b8554600160a060020a031693506113ab8961211b565b6113b5888a61215b565b92506000851115611405576113c98561241d565b604051909250600160a060020a0385169083870380156108fc02916000818181858888f19350505050158015611403573d6000803e3d6000fd5b505b604080518a815260208101879052338183015290517f38b133c64ab55e734aaef01bce9270531423b1142f27a5427d4283c3af10e0589181900360600190a15090979650505050505050565b600054600160a060020a0316331461146857600080fd5b60005460a060020a900460ff16151561148057600080fd5b601354600160a060020a0316151561149757600080fd5b6000805474ff000000000000000000000000000000000000000019169055565b60008054600160a060020a031633146114cf57600080fd5b5080600160a060020a03811615156114ef5750600054600160a060020a03165b601454611388116114ff57600080fd5b601480546001019055610fc9836000808085610c72565b600b816005811061152357fe5b0154905081565b60005460a060020a900460ff1681565b6115426129ca565b60005460a060020a900460ff161561155957600080fd5b6000838152600560205260409020548390600160a060020a0316331461157e57600080fd5b6001608060020a038316831461159357600080fd5b604080516060810182523381526001608060020a038516602082015267ffffffffffffffff4216918101919091529150610fc98483612429565b600090815260056020526040902054600160a060020a031690565b61afc881565b601654600160a060020a031681565b600160a060020a031660009081526006602052604090205490565b60035481565b600054600160a060020a0316331461163557600080fd5b60005460a060020a900460ff161561164c57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a179055565b6060600060606000806000611686876115fd565b94508415156116a557604080516000815260208101909152955061173b565b846040519080825280602002602001820160405280156116cf578160200160208202803883390190505b5093506116da610c51565b925060009150600190505b8281101561173757600081815260056020526040902054600160a060020a038881169116141561172f5780848381518110151561171e57fe5b602090810290910101526001909101905b6001016116e5565b8395505b5050505050919050565b600a5481565b600560205260009081526040902054600160a060020a031681565b600054600160a060020a031681565b60408051808201909152601081527f43727970746f46616e6379436172707300000000000000000000000000000000602082015281565b60408051808201909152600381527f4346430000000000000000000000000000000000000000000000000000000000602082015290565b600181600e81106117f057fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b60606000806000806060611822610c51565b94506000935060009250600091505b8482101561187357600082815260116020526040902060010154608060020a900467ffffffffffffffff1615611868576001909201915b600190910190611831565b8260405190808252806020026020018201604052801561189d578160200160208202803883390190505b509050600091505b8482101561190057600082815260116020526040902060010154608060020a900467ffffffffffffffff16156118f5578181858151811015156118e457fe5b602090810290910101526001909301925b6001909101906118a5565b95945050505050565b60005460a060020a900460ff161561192057600080fd5b6000818152600560205260409020548190600160a060020a0316331461194557600080fd5b600160a060020a038316151561195a57600080fd5b600082815260096020526040902060010154608060020a900467ffffffffffffffff161561198757600080fd5b600082815260116020526040902060010154608060020a900467ffffffffffffffff16156119b457600080fd5b610aeb33848461115a565b6000805460a060020a900460ff16156119d757600080fd5b6000828152600760205260409020548290600160a060020a031633146119fc57600080fd5b611a05836115cd565b9150610aeb82338561115a565b6004805482908110611a2057fe5b60009182526020909120600290910201805460019091015490915067ffffffffffffffff808216916801000000000000000081049091169063ffffffff608060020a820481169160a060020a810482169160c060020a8204169061ffff60e060020a820481169160f060020a90041688565b6000818152600560205260408120548290600160a060020a03163314611ab757600080fd5b60008381526009602052604090209150611ad082611e46565b1515611adb57600080fd5b610aeb836124f6565b600054600160a060020a03163314611afb57600080fd5b612710601054108015611b115750600060105410155b1561113c57601055565b600080808311611b2a57600080fd5b6004805484908110611b3857fe5b60009182526020918290206040805161010081018252600290930290910180548352600181015467ffffffffffffffff808216958501959095526801000000000000000081049094169183019190915263ffffffff608060020a84048116606084015260a060020a84048116608084015260c060020a84041660a083015261ffff60e060020a8404811660c084015260f060020a90930490921660e0820152909150611be390612535565b9392505050565b61138881565b60606000806000806060611c02610c51565b94506000935060009250600091505b84821015611c5357600082815260096020526040902060010154608060020a900467ffffffffffffffff1615611c48576001909201915b600190910190611c11565b82604051908082528060200260200182016040528015611c7d578160200160208202803883390190505b509050600091505b8482101561190057600082815260096020526040902060010154608060020a900467ffffffffffffffff1615611cd557818185815181101515611cc457fe5b602090810290910101526001909301925b600190910190611c85565b60408051428152905190819003602001902061113c906000808080610c72565b600080548190600160a060020a03163314611d1a57600080fd5b60155461afc811611d2a57600080fd5b6040805143815242602082015281519081900390910190209150611d52826000808030610c72565b9050611d6681611d6061256f565b306125b8565b5050601580546001019055565b60008054600160a060020a03163314611d8b57600080fd5b60155461afc811611d9b57600080fd5b611d5282600080600030610c72565b60155481565b601354600160a060020a031681565b600054600160a060020a03163314611dd657600080fd5b600160a060020a0381161515611deb57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b600101546000608060020a90910467ffffffffffffffff161190565b611e6b8161211b565b6040805182815290517f205ec377f8f540014039c2437658baaab6568f8e3bd0763f9bab6015cbfe2f449181900360200190a150565b60008281526011602090815260409182902083518154600160a060020a031916600160a060020a039091161781558382015160019091018054858501516fffffffffffffffffffffffffffffffff199091166001608060020a0390931692831777ffffffffffffffff000000000000000000000000000000001916608060020a67ffffffffffffffff9092169190910217905582518581529182015281517ff25dcd120e672cd840b70a8b5983b2b8049781a15648738c14e347895d54c731929181900390910190a15050565b6000828152600960205260408120818080808080611f8b87611e46565b1515611f9657600080fd5b60018701546001608060020a0316955085891015611fb357600080fd5b8654600160a060020a03169450611fc98a61265c565b600086111561201b57611fdb8661241d565b6040519094508487039350600160a060020a0386169084156108fc029085906000818181858888f19350505050158015612019573d6000803e3d6000fd5b505b600480548b90811061202957fe5b60009182526020909120600290910201600181015490925060f060020a900461ffff16151561207a5785600b6005600a5481151561206357fe5b066005811061206e57fe5b0155600a805460010190555b5060405185890390339082156108fc029083906000818181858888f193505050501580156120ac573d6000803e3d6000fd5b50604080518b815260208101889052338183015290517f9f2881bde82d4b6e9c19bec262dbbdba7266ff214c4c822aa94035f21b263f339181900360600190a1509398975050505050505050565b600082820183811015611be357fe5b60008282111561211557fe5b50900390565b60009081526011602052604090208054600160a060020a0319168155600101805477ffffffffffffffffffffffffffffffffffffffffffffffff19169055565b600080600080600080600060048981548110151561217557fe5b9060005260206000209060020201955060048881548110151561219457fe5b600091825260209182902060408051610100810182528a54815260018b015467ffffffffffffffff808216968301969096526801000000000000000081049095169181019190915263ffffffff608060020a85048116606083015260a060020a85048116608083015260c060020a85041660a082015261ffff60e060020a8504811660c083015260f060020a90940490931660e0840152600290910201955061223c90612535565b80156122d45750604080516101008101825286548152600187015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e08201526122d490612535565b15156122df57600080fd5b6122e9898961269c565b15156122f457600080fd5b60135486548654604080517f0d9f5aed0000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915243604483015251600160a060020a0390921691630d9f5aed916064808201926020929091908290030181600087803b15801561236d57600080fd5b505af1158015612381573d6000803e3d6000fd5b505050506040513d602081101561239757600080fd5b50516001808801549087015491955061ffff60f060020a91829004811695509104168310156123d357600185015460f060020a900461ffff1692505b600089815260056020526040902054600160a060020a031691506123fd848a8a6001870186610c72565b9050612408856126eb565b612411866126eb565b98975050505050505050565b60125461271091020490565b60008281526009602090815260409182902083518154600160a060020a031916600160a060020a039091161781558382015160019091018054858501516fffffffffffffffffffffffffffffffff199091166001608060020a0390931692831777ffffffffffffffff000000000000000000000000000000001916608060020a67ffffffffffffffff9092169190910217905582518581529182015281517f35f25ba6c68be9e7f0a8a50f4d284bb035a4a21d856a0e7d3fd7945079c5ab30929181900390910190a15050565b6124ff8161265c565b6040805182815290517f2c56893f6f6026d19bd17b7d05c9f15c522de1ae2b1c3a825f91a73c799321f29181900360200190a150565b60008160a0015163ffffffff16600014801561256957504367ffffffffffffffff16826040015167ffffffffffffffff1611155b92915050565b600080600061257c6127d2565b91506001608060020a038216821461259357600080fd5b50600281048101662386f26fc100008110156125695750662386f26fc1000092915050565b6125c06129ca565b60005460a060020a900460ff16156125d757600080fd5b6000848152600560205260409020548490600160a060020a031633146125fc57600080fd5b6001608060020a038416841461261157600080fd5b60606040519081016040528084600160a060020a03168152602001856001608060020a031681526020014267ffffffffffffffff1681525091506126558583612429565b5050505050565b60009081526009602052604090208054600160a060020a0319168155600101805477ffffffffffffffffffffffffffffffffffffffffffffffff19169055565b60008060006004858154811015156126b057fe5b906000526020600020906002020191506004848154811015156126cf57fe5b9060005260206000209060020201905061190082868387612806565b6003546001828101544392919060e060020a900461ffff16600e811061270d57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1681151561273857fe5b6001840180546fffffffffffffffff0000000000000000191668010000000000000000939092049390930167ffffffffffffffff16919091021790819055600d60e060020a90910461ffff16101561113c576001818101805461ffff60e060020a8083048216909401169092027fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff90921691909117905550565b600080805b60058110156127fc57600b81600581106127ed57fe5b015491909101906001016127d7565b5060059004919050565b6000818414156128185750600061297e565b6001850154608060020a900463ffffffff168214806128475750600185015460a060020a900463ffffffff1682145b156128545750600061297e565b6001830154608060020a900463ffffffff168414806128835750600183015460a060020a900463ffffffff1684145b156128905750600061297e565b6001830154608060020a900463ffffffff1615806128bd57506001850154608060020a900463ffffffff16155b156128ca5750600161297e565b60018581015490840154608060020a9182900463ffffffff90811692909104161480612915575060018086015490840154608060020a900463ffffffff90811660a060020a90920416145b156129225750600061297e565b6001808601549084015460a060020a900463ffffffff908116608060020a90920416148061296d57506001858101549084015460a060020a9182900463ffffffff9081169290910416145b1561297a5750600061297e565b5060015b949350505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6040805160608101825260008082526020820181905291810191909152905600a165627a7a723058209edbdf41745cb10bf073059323e267d7100cff39f8391015dfe8eb30ca904cfc0029";

    protected FishContracts_sol_FishCore(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected FishContracts_sol_FishCore(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public List<BreedingSaleCreatedEventResponse> getBreedingSaleCreatedEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("BreedingSaleCreated", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(event, transactionReceipt);
        ArrayList<BreedingSaleCreatedEventResponse> responses = new ArrayList<BreedingSaleCreatedEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            BreedingSaleCreatedEventResponse typedResponse = new BreedingSaleCreatedEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.price = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<BreedingSaleCreatedEventResponse> breedingSaleCreatedEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("BreedingSaleCreated", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, BreedingSaleCreatedEventResponse>() {
            @Override
            public BreedingSaleCreatedEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(event, log);
                BreedingSaleCreatedEventResponse typedResponse = new BreedingSaleCreatedEventResponse();
                typedResponse.log = log;
                typedResponse.tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse.price = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
                return typedResponse;
            }
        });
    }

    public List<BreedingSaleSuccessfulEventResponse> getBreedingSaleSuccessfulEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("BreedingSaleSuccessful", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}));
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(event, transactionReceipt);
        ArrayList<BreedingSaleSuccessfulEventResponse> responses = new ArrayList<BreedingSaleSuccessfulEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            BreedingSaleSuccessfulEventResponse typedResponse = new BreedingSaleSuccessfulEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.price = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.buyer = (String) eventValues.getNonIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<BreedingSaleSuccessfulEventResponse> breedingSaleSuccessfulEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("BreedingSaleSuccessful", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, BreedingSaleSuccessfulEventResponse>() {
            @Override
            public BreedingSaleSuccessfulEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(event, log);
                BreedingSaleSuccessfulEventResponse typedResponse = new BreedingSaleSuccessfulEventResponse();
                typedResponse.log = log;
                typedResponse.tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse.price = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
                typedResponse.buyer = (String) eventValues.getNonIndexedValues().get(2).getValue();
                return typedResponse;
            }
        });
    }

    public List<BreedingSaleCancelledEventResponse> getBreedingSaleCancelledEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("BreedingSaleCancelled", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(event, transactionReceipt);
        ArrayList<BreedingSaleCancelledEventResponse> responses = new ArrayList<BreedingSaleCancelledEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            BreedingSaleCancelledEventResponse typedResponse = new BreedingSaleCancelledEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<BreedingSaleCancelledEventResponse> breedingSaleCancelledEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("BreedingSaleCancelled", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, BreedingSaleCancelledEventResponse>() {
            @Override
            public BreedingSaleCancelledEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(event, log);
                BreedingSaleCancelledEventResponse typedResponse = new BreedingSaleCancelledEventResponse();
                typedResponse.log = log;
                typedResponse.tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                return typedResponse;
            }
        });
    }

    public List<SaleCreatedEventResponse> getSaleCreatedEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("SaleCreated", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(event, transactionReceipt);
        ArrayList<SaleCreatedEventResponse> responses = new ArrayList<SaleCreatedEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            SaleCreatedEventResponse typedResponse = new SaleCreatedEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.price = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<SaleCreatedEventResponse> saleCreatedEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("SaleCreated", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, SaleCreatedEventResponse>() {
            @Override
            public SaleCreatedEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(event, log);
                SaleCreatedEventResponse typedResponse = new SaleCreatedEventResponse();
                typedResponse.log = log;
                typedResponse.tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse.price = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
                return typedResponse;
            }
        });
    }

    public List<SaleSuccessfulEventResponse> getSaleSuccessfulEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("SaleSuccessful", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}));
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(event, transactionReceipt);
        ArrayList<SaleSuccessfulEventResponse> responses = new ArrayList<SaleSuccessfulEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            SaleSuccessfulEventResponse typedResponse = new SaleSuccessfulEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.price = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.buyer = (String) eventValues.getNonIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<SaleSuccessfulEventResponse> saleSuccessfulEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("SaleSuccessful", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, SaleSuccessfulEventResponse>() {
            @Override
            public SaleSuccessfulEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(event, log);
                SaleSuccessfulEventResponse typedResponse = new SaleSuccessfulEventResponse();
                typedResponse.log = log;
                typedResponse.tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse.price = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
                typedResponse.buyer = (String) eventValues.getNonIndexedValues().get(2).getValue();
                return typedResponse;
            }
        });
    }

    public List<SaleCancelledEventResponse> getSaleCancelledEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("SaleCancelled", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(event, transactionReceipt);
        ArrayList<SaleCancelledEventResponse> responses = new ArrayList<SaleCancelledEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            SaleCancelledEventResponse typedResponse = new SaleCancelledEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<SaleCancelledEventResponse> saleCancelledEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("SaleCancelled", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, SaleCancelledEventResponse>() {
            @Override
            public SaleCancelledEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(event, log);
                SaleCancelledEventResponse typedResponse = new SaleCancelledEventResponse();
                typedResponse.log = log;
                typedResponse.tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                return typedResponse;
            }
        });
    }

    public List<TransferEventResponse> getTransferEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("Transfer", 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(event, transactionReceipt);
        ArrayList<TransferEventResponse> responses = new ArrayList<TransferEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            TransferEventResponse typedResponse = new TransferEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse._from = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse._to = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse._tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<TransferEventResponse> transferEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("Transfer", 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, TransferEventResponse>() {
            @Override
            public TransferEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(event, log);
                TransferEventResponse typedResponse = new TransferEventResponse();
                typedResponse.log = log;
                typedResponse._from = (String) eventValues.getIndexedValues().get(0).getValue();
                typedResponse._to = (String) eventValues.getIndexedValues().get(1).getValue();
                typedResponse._tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                return typedResponse;
            }
        });
    }

    public List<ApprovalEventResponse> getApprovalEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("Approval", 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(event, transactionReceipt);
        ArrayList<ApprovalEventResponse> responses = new ArrayList<ApprovalEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            ApprovalEventResponse typedResponse = new ApprovalEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse._owner = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse._approved = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse._tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<ApprovalEventResponse> approvalEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("Approval", 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, ApprovalEventResponse>() {
            @Override
            public ApprovalEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(event, log);
                ApprovalEventResponse typedResponse = new ApprovalEventResponse();
                typedResponse.log = log;
                typedResponse._owner = (String) eventValues.getIndexedValues().get(0).getValue();
                typedResponse._approved = (String) eventValues.getIndexedValues().get(1).getValue();
                typedResponse._tokenId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                return typedResponse;
            }
        });
    }

    public List<BirthEventResponse> getBirthEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("Birth", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint32>() {}, new TypeReference<Uint32>() {}, new TypeReference<Uint32>() {}, new TypeReference<Uint256>() {}));
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(event, transactionReceipt);
        ArrayList<BirthEventResponse> responses = new ArrayList<BirthEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            BirthEventResponse typedResponse = new BirthEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.owner = (String) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.fishId = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.matronId = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.sireId = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            typedResponse.genes = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<BirthEventResponse> birthEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("Birth", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint32>() {}, new TypeReference<Uint32>() {}, new TypeReference<Uint32>() {}, new TypeReference<Uint256>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, BirthEventResponse>() {
            @Override
            public BirthEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(event, log);
                BirthEventResponse typedResponse = new BirthEventResponse();
                typedResponse.log = log;
                typedResponse.owner = (String) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse.fishId = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
                typedResponse.matronId = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
                typedResponse.sireId = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
                typedResponse.genes = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
                return typedResponse;
            }
        });
    }

    public List<ContractUpgradeEventResponse> getContractUpgradeEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("ContractUpgrade", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(event, transactionReceipt);
        ArrayList<ContractUpgradeEventResponse> responses = new ArrayList<ContractUpgradeEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            ContractUpgradeEventResponse typedResponse = new ContractUpgradeEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.newContract = (String) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<ContractUpgradeEventResponse> contractUpgradeEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("ContractUpgrade", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, ContractUpgradeEventResponse>() {
            @Override
            public ContractUpgradeEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(event, log);
                ContractUpgradeEventResponse typedResponse = new ContractUpgradeEventResponse();
                typedResponse.log = log;
                typedResponse.newContract = (String) eventValues.getNonIndexedValues().get(0).getValue();
                return typedResponse;
            }
        });
    }

    public List<OwnershipTransferredEventResponse> getOwnershipTransferredEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("OwnershipTransferred", 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}),
                Arrays.<TypeReference<?>>asList());
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(event, transactionReceipt);
        ArrayList<OwnershipTransferredEventResponse> responses = new ArrayList<OwnershipTransferredEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            OwnershipTransferredEventResponse typedResponse = new OwnershipTransferredEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.previousOwner = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.newOwner = (String) eventValues.getIndexedValues().get(1).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<OwnershipTransferredEventResponse> ownershipTransferredEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("OwnershipTransferred", 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}),
                Arrays.<TypeReference<?>>asList());
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, OwnershipTransferredEventResponse>() {
            @Override
            public OwnershipTransferredEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(event, log);
                OwnershipTransferredEventResponse typedResponse = new OwnershipTransferredEventResponse();
                typedResponse.log = log;
                typedResponse.previousOwner = (String) eventValues.getIndexedValues().get(0).getValue();
                typedResponse.newOwner = (String) eventValues.getIndexedValues().get(1).getValue();
                return typedResponse;
            }
        });
    }

    public RemoteCall<BigInteger> ownerFishCount(String param0) {
        final Function function = new Function("ownerFishCount", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<BigInteger> promoCreatedCount() {
        final Function function = new Function("promoCreatedCount", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<String> name() {
        final Function function = new Function("name", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> approve(String _to, BigInteger _tokenId) {
        final Function function = new Function(
                "approve", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_to), 
                new org.web3j.abi.datatypes.generated.Uint256(_tokenId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<BigInteger> GEN0_STARTING_PRICE() {
        final Function function = new Function("GEN0_STARTING_PRICE", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<TransactionReceipt> cancelBreedingSale(BigInteger _tokenId) {
        final Function function = new Function(
                "cancelBreedingSale", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_tokenId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<Tuple10<Boolean, Boolean, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>> getFish(BigInteger _id) {
        final Function function = new Function("getFish", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}, new TypeReference<Bool>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        return new RemoteCall<Tuple10<Boolean, Boolean, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>>(
                new Callable<Tuple10<Boolean, Boolean, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>>() {
                    @Override
                    public Tuple10<Boolean, Boolean, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple10<Boolean, Boolean, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>(
                                (Boolean) results.get(0).getValue(), 
                                (Boolean) results.get(1).getValue(), 
                                (BigInteger) results.get(2).getValue(), 
                                (BigInteger) results.get(3).getValue(), 
                                (BigInteger) results.get(4).getValue(), 
                                (BigInteger) results.get(5).getValue(), 
                                (BigInteger) results.get(6).getValue(), 
                                (BigInteger) results.get(7).getValue(), 
                                (BigInteger) results.get(8).getValue(), 
                                (BigInteger) results.get(9).getValue());
                    }
                });
    }

    public RemoteCall<BigInteger> totalSupply() {
        final Function function = new Function("totalSupply", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<String> fishApprovals(BigInteger param0) {
        final Function function = new Function("fishApprovals", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> _createFish(BigInteger _genes, BigInteger _matronId, BigInteger _sireId, BigInteger _generation, String _owner) {
        final Function function = new Function(
                "_createFish", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_genes), 
                new org.web3j.abi.datatypes.generated.Uint32(_matronId), 
                new org.web3j.abi.datatypes.generated.Uint32(_sireId), 
                new org.web3j.abi.datatypes.generated.Uint16(_generation), 
                new org.web3j.abi.datatypes.Address(_owner)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> createBreedingSale(BigInteger _tokenId, BigInteger _price) {
        final Function function = new Function(
                "createBreedingSale", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_tokenId), 
                new org.web3j.abi.datatypes.generated.Uint256(_price)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<String> token_symbol() {
        final Function function = new Function("token_symbol", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> buyOwnership(BigInteger _tokenId, BigInteger weiValue) {
        final Function function = new Function(
                "buyOwnership", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_tokenId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function, weiValue);
    }

    public RemoteCall<TransactionReceipt> setGeneScienceAddress(String _address) {
        final Function function = new Function(
                "setGeneScienceAddress", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_address)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> setBreedingSaleFee(BigInteger _saleFee) {
        final Function function = new Function(
                "setBreedingSaleFee", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_saleFee)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<String> sireAllowedAddress(BigInteger param0) {
        final Function function = new Function("sireAllowedAddress", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> _transfer(String _from, String _to, BigInteger _tokenId) {
        final Function function = new Function(
                "_transfer", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_from), 
                new org.web3j.abi.datatypes.Address(_to), 
                new org.web3j.abi.datatypes.generated.Uint256(_tokenId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<Tuple3<String, BigInteger, BigInteger>> tokenIdToSale(BigInteger param0) {
        final Function function = new Function("tokenIdToSale", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint128>() {}, new TypeReference<Uint64>() {}));
        return new RemoteCall<Tuple3<String, BigInteger, BigInteger>>(
                new Callable<Tuple3<String, BigInteger, BigInteger>>() {
                    @Override
                    public Tuple3<String, BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple3<String, BigInteger, BigInteger>(
                                (String) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue(), 
                                (BigInteger) results.get(2).getValue());
                    }
                });
    }

    public RemoteCall<Tuple3<String, BigInteger, BigInteger>> tokenIdToBreedingSale(BigInteger param0) {
        final Function function = new Function("tokenIdToBreedingSale", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint128>() {}, new TypeReference<Uint64>() {}));
        return new RemoteCall<Tuple3<String, BigInteger, BigInteger>>(
                new Callable<Tuple3<String, BigInteger, BigInteger>>() {
                    @Override
                    public Tuple3<String, BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple3<String, BigInteger, BigInteger>(
                                (String) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue(), 
                                (BigInteger) results.get(2).getValue());
                    }
                });
    }

    public RemoteCall<TransactionReceipt> buyMating(BigInteger _tokenId, BigInteger _mateId, BigInteger weiValue) {
        final Function function = new Function(
                "buyMating", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_tokenId), 
                new org.web3j.abi.datatypes.generated.Uint256(_mateId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function, weiValue);
    }

    public RemoteCall<TransactionReceipt> unpause() {
        final Function function = new Function(
                "unpause", 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> createPromofish(BigInteger _genes, String _owner) {
        final Function function = new Function(
                "createPromofish", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_genes), 
                new org.web3j.abi.datatypes.Address(_owner)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<BigInteger> lastGen0SalePrices(BigInteger param0) {
        final Function function = new Function("lastGen0SalePrices", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<Boolean> paused() {
        final Function function = new Function("paused", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteCall<TransactionReceipt> createSale(BigInteger _tokenId, BigInteger _price) {
        final Function function = new Function(
                "createSale", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_tokenId), 
                new org.web3j.abi.datatypes.generated.Uint256(_price)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<String> ownerOf(BigInteger _tokenId) {
        final Function function = new Function("ownerOf", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_tokenId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<BigInteger> GEN0_CREATION_LIMIT() {
        final Function function = new Function("GEN0_CREATION_LIMIT", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<String> newContractAddress() {
        final Function function = new Function("newContractAddress", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<BigInteger> balanceOf(String _owner) {
        final Function function = new Function("balanceOf", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_owner)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<BigInteger> secondsPerBlock() {
        final Function function = new Function("secondsPerBlock", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<TransactionReceipt> pause() {
        final Function function = new Function(
                "pause", 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<List> tokensOfOwner(String _owner) {
        final Function function = new Function("tokensOfOwner", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_owner)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Uint256>>() {}));
        return new RemoteCall<List>(
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result = (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteCall<BigInteger> gen0SaleCount() {
        final Function function = new Function("gen0SaleCount", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<String> fishToOwner(BigInteger param0) {
        final Function function = new Function("fishToOwner", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<String> owner() {
        final Function function = new Function("owner", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<String> token_name() {
        final Function function = new Function("token_name", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<String> symbol() {
        final Function function = new Function("symbol", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<BigInteger> cooldowns(BigInteger param0) {
        final Function function = new Function("cooldowns", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<List> onBreedingsSaleTokens() {
        final Function function = new Function("onBreedingsSaleTokens", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Uint256>>() {}));
        return new RemoteCall<List>(
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result = (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteCall<TransactionReceipt> transfer(String _to, BigInteger _tokenId) {
        final Function function = new Function(
                "transfer", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_to), 
                new org.web3j.abi.datatypes.generated.Uint256(_tokenId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> takeOwnership(BigInteger _tokenId) {
        final Function function = new Function(
                "takeOwnership", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_tokenId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<Tuple8<BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>> fishes(BigInteger param0) {
        final Function function = new Function("fishes", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint64>() {}, new TypeReference<Uint64>() {}, new TypeReference<Uint32>() {}, new TypeReference<Uint32>() {}, new TypeReference<Uint32>() {}, new TypeReference<Uint16>() {}, new TypeReference<Uint16>() {}));
        return new RemoteCall<Tuple8<BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>>(
                new Callable<Tuple8<BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>>() {
                    @Override
                    public Tuple8<BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple8<BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger>(
                                (BigInteger) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue(), 
                                (BigInteger) results.get(2).getValue(), 
                                (BigInteger) results.get(3).getValue(), 
                                (BigInteger) results.get(4).getValue(), 
                                (BigInteger) results.get(5).getValue(), 
                                (BigInteger) results.get(6).getValue(), 
                                (BigInteger) results.get(7).getValue());
                    }
                });
    }

    public RemoteCall<TransactionReceipt> cancelSale(BigInteger _tokenId) {
        final Function function = new Function(
                "cancelSale", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_tokenId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> setSaleFee(BigInteger _saleFee) {
        final Function function = new Function(
                "setSaleFee", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_saleFee)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<Boolean> isReadyToBreed(BigInteger _FishId) {
        final Function function = new Function("isReadyToBreed", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_FishId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteCall<BigInteger> PROMO_CREATION_LIMIT() {
        final Function function = new Function("PROMO_CREATION_LIMIT", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<List> onSaleTokens() {
        final Function function = new Function("onSaleTokens", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Uint256>>() {}));
        return new RemoteCall<List>(
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result = (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteCall<TransactionReceipt> init() {
        final Function function = new Function(
                "init", 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> createRandomGen0Sale() {
        final Function function = new Function(
                "createRandomGen0Sale", 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> createGen0Sale(BigInteger _genes) {
        final Function function = new Function(
                "createGen0Sale", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_genes)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<BigInteger> gen0CreatedCount() {
        final Function function = new Function("gen0CreatedCount", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<String> geneScience() {
        final Function function = new Function("geneScience", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> transferOwnership(String newOwner) {
        final Function function = new Function(
                "transferOwnership", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(newOwner)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public static RemoteCall<FishContracts_sol_FishCore> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(FishContracts_sol_FishCore.class, web3j, credentials, gasPrice, gasLimit, BINARY, "");
    }

    public static RemoteCall<FishContracts_sol_FishCore> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(FishContracts_sol_FishCore.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "");
    }

    public static FishContracts_sol_FishCore load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new FishContracts_sol_FishCore(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    public static FishContracts_sol_FishCore load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new FishContracts_sol_FishCore(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static class BreedingSaleCreatedEventResponse {
        public Log log;

        public BigInteger tokenId;

        public BigInteger price;
    }

    public static class BreedingSaleSuccessfulEventResponse {
        public Log log;

        public BigInteger tokenId;

        public BigInteger price;

        public String buyer;
    }

    public static class BreedingSaleCancelledEventResponse {
        public Log log;

        public BigInteger tokenId;
    }

    public static class SaleCreatedEventResponse {
        public Log log;

        public BigInteger tokenId;

        public BigInteger price;
    }

    public static class SaleSuccessfulEventResponse {
        public Log log;

        public BigInteger tokenId;

        public BigInteger price;

        public String buyer;
    }

    public static class SaleCancelledEventResponse {
        public Log log;

        public BigInteger tokenId;
    }

    public static class TransferEventResponse {
        public Log log;

        public String _from;

        public String _to;

        public BigInteger _tokenId;
    }

    public static class ApprovalEventResponse {
        public Log log;

        public String _owner;

        public String _approved;

        public BigInteger _tokenId;
    }

    public static class BirthEventResponse {
        public Log log;

        public String owner;

        public BigInteger fishId;

        public BigInteger matronId;

        public BigInteger sireId;

        public BigInteger genes;
    }

    public static class ContractUpgradeEventResponse {
        public Log log;

        public String newContract;
    }

    public static class OwnershipTransferredEventResponse {
        public Log log;

        public String previousOwner;

        public String newOwner;
    }
}
